/**
 * 热门播放列表API
 * 用于前端调用热门播放列表相关功能
 */

// 导入云对象
const sandartObj = uniCloud.importObject('sandart')

/**
 * 热门播放列表API模块
 */
export default {
	/**
	 * 获取热门播放列表
	 * @param {object} params 查询参数
	 * @param {number} [params.page=1] 页码
	 * @param {number} [params.pageSize=10] 每页数量
	 * @param {string} [params.category] 分类筛选
	 * @param {string} [params.language] 语言
	 * @returns {Promise<object>} 热门播放列表数据
	 * @example
	 * const result = await featuredPlaylistApi.getFeaturedPlaylists({
	 *   page: 1,
	 *   pageSize: 10,
	 *   category: 'nature'
	 * })
	 */
	async getFeaturedPlaylists(params = {}) {
		try {
			const result = await sandartObj.getFeaturedPlaylists(params)
			return result
		} catch (error) {
			console.error('获取热门播放列表失败:', error)
			throw error
		}
	},

	/**
	 * 获取热门播放列表详情
	 * @param {object} params 查询参数
	 * @param {string} params.playlistId 播放列表ID
	 * @param {string} [params.language] 语言
	 * @returns {Promise<object>} 播放列表详情
	 * @example
	 * const result = await featuredPlaylistApi.getFeaturedPlaylistDetail({
	 *   playlistId: 'playlist123'
	 * })
	 */
	async getFeaturedPlaylistDetail(params) {
		try {
			const result = await sandartObj.getFeaturedPlaylistDetail(params)
			return result
		} catch (error) {
			console.error('获取热门播放列表详情失败:', error)
			throw error
		}
	},

	/**
	 * 获取热门播放列表中的图案
	 * @param {object} params 查询参数
	 * @param {string} params.playlistId 播放列表ID
	 * @param {number} [params.page=1] 页码
	 * @param {number} [params.pageSize=20] 每页数量
	 * @param {string} [params.language] 语言
	 * @returns {Promise<object>} 图案列表数据
	 * @example
	 * const result = await featuredPlaylistApi.getFeaturedPlaylistPatterns({
	 *   playlistId: 'playlist123',
	 *   page: 1,
	 *   pageSize: 20
	 * })
	 */
	async getFeaturedPlaylistPatterns(params) {
		try {
			const result = await sandartObj.getFeaturedPlaylistPatterns(params)
			return result
		} catch (error) {
			console.error('获取热门播放列表图案失败:', error)
			throw error
		}
	},

	/**
	 * 搜索热门播放列表
	 * @param {object} params 搜索参数
	 * @param {string} params.keyword 搜索关键词
	 * @param {number} [params.page=1] 页码
	 * @param {number} [params.pageSize=10] 每页数量
	 * @param {string} [params.category] 分类筛选
	 * @param {string} [params.language] 语言
	 * @returns {Promise<object>} 搜索结果
	 * @example
	 * const result = await featuredPlaylistApi.searchFeaturedPlaylists({
	 *   keyword: '自然',
	 *   category: 'nature',
	 *   page: 1,
	 *   pageSize: 10
	 * })
	 */
	async searchFeaturedPlaylists(params) {
		try {
			const result = await sandartObj.searchFeaturedPlaylists(params)
			return result
		} catch (error) {
			console.error('搜索热门播放列表失败:', error)
			throw error
		}
	},

	/**
	 * 获取热门播放列表分类
	 * @param {object} params 查询参数
	 * @param {string} [params.language] 语言
	 * @returns {Promise<object>} 分类列表
	 * @example
	 * const result = await featuredPlaylistApi.getFeaturedPlaylistCategories()
	 */
	async getFeaturedPlaylistCategories(params = {}) {
		try {
			const result = await sandartObj.getFeaturedPlaylistCategories(params)
			return result
		} catch (error) {
			console.error('获取热门播放列表分类失败:', error)
			throw error
		}
	},

	/**
	 * 增加播放列表播放次数
	 * @param {object} params 参数
	 * @param {string} params.playlistId 播放列表ID
	 * @returns {Promise<object>} 更新结果
	 * @example
	 * const result = await featuredPlaylistApi.incrementPlayCount({
	 *   playlistId: 'playlist123'
	 * })
	 */
	async incrementPlayCount(params) {
		try {
			const result = await sandartObj.incrementFeaturedPlaylistPlayCount(params)
			return result
		} catch (error) {
			console.error('增加播放次数失败:', error)
			throw error
		}
	},

	/**
	 * 收藏热门播放列表
	 * @param {object} params 收藏参数
	 * @param {string} params.playlistId 播放列表ID
	 * @returns {Promise<object>} 收藏结果
	 * @example
	 * const result = await featuredPlaylistApi.favoritePlaylist({
	 *   playlistId: 'playlist123'
	 * })
	 */
	async favoritePlaylist(params) {
		try {
			const result = await sandartObj.favoriteFeaturedPlaylist(params)
			return result
		} catch (error) {
			console.error('收藏播放列表失败:', error)
			throw error
		}
	},

	/**
	 * 取消收藏热门播放列表
	 * @param {object} params 取消收藏参数
	 * @param {string} params.playlistId 播放列表ID
	 * @returns {Promise<object>} 取消收藏结果
	 * @example
	 * const result = await featuredPlaylistApi.unfavoritePlaylist({
	 *   playlistId: 'playlist123'
	 * })
	 */
	async unfavoritePlaylist(params) {
		try {
			const result = await sandartObj.unfavoriteFeaturedPlaylist(params)
			return result
		} catch (error) {
			console.error('取消收藏播放列表失败:', error)
			throw error
		}
	},

	/**
	 * 获取用户收藏的热门播放列表
	 * @param {object} params 查询参数
	 * @param {number} [params.page=1] 页码
	 * @param {number} [params.pageSize=10] 每页数量
	 * @param {string} [params.language] 语言
	 * @returns {Promise<object>} 收藏的播放列表
	 * @example
	 * const result = await featuredPlaylistApi.getUserFavoritePlaylists({
	 *   page: 1,
	 *   pageSize: 10
	 * })
	 */
	async getUserFavoritePlaylists(params = {}) {
		try {
			const result = await sandartObj.getUserFavoriteFeaturedPlaylists(params)
			return result
		} catch (error) {
			console.error('获取用户收藏的播放列表失败:', error)
			throw error
		}
	}
}
